package com.sunspring.zdcall.mapper.master;

import com.sunspring.zdcall.bo.UserBo;
import com.sunspring.zdcall.dto.UserDto;
import com.sunspring.zdcall.param.UserParam;
import com.sunspring.zdcall.param.UserSearchParam;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @Author WuLei
 * @Date 2018/12/3  11:39
 */
public interface UserMapper {


    /**
     * 修改密码
     * @param id     用户id
     * @param newPwd 新密码
     * @return 受影响行数
     */
    int verifyPwd(@Param("userId") int id, @Param("newPwd") String newPwd);

    /**
     * 根据用户名查询用户数量
     * @param username username
     * @return 受影响行数
     */
    int selectCountByUsername(String username);

    /**
     * 多条件查询用户信息
     *
     * @param usp UserSearchParam查询参数
     * @return List<UserInfoDto>
     */
    List<UserBo> selectBySelective(UserSearchParam usp);

    /**
     * 新增用户
     * @param userParam 用户参数
     * @return 受影响行数
     */
    int insert(UserParam userParam);

    /**
     * 密码重置
     * @param userId 用户id
     * @param defaultPwd 默认密码
     * @return 受影响行数
     */
    int resetPwd(@Param("userId") int userId, @Param("defaultPwd") String defaultPwd);

    /**
     * 根据id查询用户状态
     * @param userId 用户id
     * @return 用户状态
     */
    Integer selectUserStateByUserId(Integer userId);

    /**
     * 更新用户状态
     *
     * @param userId 用户Id
     * @param state  状态
     * @return 受影响行数
     */
    int updateStateById(@Param("userId") int userId, @Param("state") int state);

    /**
     * 新增用户和检查室的映射
     *
     * @param userId 用户id
     * @param ids    检查室id集合
     * @return 受影响行数
     */
    int insertBatchUserCheckroomMapping(@Param("userId") int userId, @Param("checkroomIds") String[] ids);

    /**
     * 批量删除用户和检查室映射
     * @param userId 用户id
     * @return 受影响行数
     */
    int deleteUserCheckroomMapping(int userId);



    List<UserDto> selectSelective(UserSearchParam usp);

}
